package com.ruoyi.utli.video;


import com.alibaba.fastjson2.JSONObject;
import com.hikvision.artemis.sdk.ArtemisHttpUtil;
import java.util.HashMap;
import java.util.Map;

/**
 * @Description: 海康视频流获取
 * @Author: yanakai@126.com
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
public class VideoUtils {

    private static final String ARTEMIS_PATH = "/artemis";


    /**
     * @title getVidePreview
     * @description  根据监控点编号获取监控点预览取流URL
     * @param cameraIndexCode   监控点编号（通用唯一识别码UUID）
     * @param streamType   码流类型(0-主码流,1-子码流),未填默认为主码流
     * @param protocol  协议类型（rtsp-rtsp协议,rtmp-rtmp协议,hls-hLS协议），未填写为rtsp协议
     * @param transmode  协议类型( 0-udp，1-tcp),默认为tcp，在protocol设置为rtsp或者rtmp时有效
     * @return java.lang.Object
     * @author yanakai@126.com
     */
    public static String getVidePreview(String cameraIndexCode,Integer streamType,String protocol,Integer transmode){
        ArtemisConfigUtils.changeShiPin();// 海康接口服务器
        PreviewURLsRequest previewURLsRequest = new PreviewURLsRequest();
        previewURLsRequest.setCameraIndexCode(cameraIndexCode);
        previewURLsRequest.setStreamType(streamType);
        previewURLsRequest.setProtocol(protocol);
        previewURLsRequest.setTransmode(transmode);
        String apiUrl = ARTEMIS_PATH +"/api/video/v2/cameras/previewURLs";
        Map<String,String> path = new HashMap<String,String>(2){
            {
                put("https://",apiUrl);
            }
        };
        String body= JSONObject.toJSONString(previewURLsRequest);
        String result = ArtemisHttpUtil.doPostStringArtemis(path,body,null,null,"application/json");
        return result;
    }

    /**
     * @title handleVideoControlling
     * @description  操作云台
     * @Param cameraIndexCode 监控点编号，
     * @Param actionCode 0-开始 ，1-停止  注：GOTO_PRESET命令下填任意值均可转到预置点,建议填0即可
     * @Param operationType  操作类型  不区分大小写
     * 说明：
     * LEFT 左转
     * RIGHT右转
     * UP 上转
     * DOWN 下转
     * ZOOM_IN 焦距变大
     * ZOOM_OUT 焦距变小
     * LEFT_UP 左上
     * LEFT_DOWN 左下
     * RIGHT_UP 右上
     * RIGHT_DOWN 右下
     * FOCUS_NEAR 焦点前移
     * FOCUS_FAR 焦点后移
     * IRIS_ENLARGE 光圈扩大
     * IRIS_REDUCE 光圈缩小
     * WIPER_SWITCH 接通雨刷开关
     * START_RECORD_TRACK	开始记录轨迹
     * STOP_RECORD_TRACK 停止记录轨迹
     * START_TRACK 开始轨迹
     * STOP_TRACK 停止轨迹；
     * @return java.lang.String
     * @author yanakai@126.com
     */
    //根据监控点编号进行云台操作
    public static String handleVideoControlling( ControllingRequest controllingRequest){
        ArtemisConfigUtils.changeShiPin();// 海康接口服务器
        String apiUrl = ARTEMIS_PATH +"/api/video/v1/ptzs/controlling";
        Map<String,String> path = new HashMap<String,String>(2){
            {
                put("https://",apiUrl);
            }
        };
        String body=JSONObject.toJSONString(controllingRequest);
        String result =ArtemisHttpUtil.doPostStringArtemis(path,body,null,null,"application/json");
        return result;
    }




}
